/*******************************************************
 * 文件名称:  com.minis.core.ClassPathXmlResource
 *
 * 系统名称:
 *
 * 模块名称:
 *
 * 软件版权: 小刘开发
 *
 * 功能说明:
 *
 * 开发人员: rui.liu
 *
 * 开发时间: 2024/8/12 09:39
 *
 * 修改记录:
 *
 *
 *
 * 程序版本     修改日期   修改人员   修改单号
 *
 *******************/
package com.minis.core;

import com.minis.exception.BeansException;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.net.URL;
import java.util.Iterator;

/**
 * <p>Title: ClassPathXmlResource</p>
 * <p>Description:  dom4j 这个外部 jar 包方便我们读取并解析 XML 文件内容，将 XML 的标签以及参数
 * 转换成 Java 的对象。当然我们也可以自行写代码来解析文件，但是为了简化代码，避免重
 * 复造轮子，这里我们选择直接引用第三方包。</p>
 *
 * @Author rui.liu
 * @Date 2024/8/12 09:39
 * @Version
 */
public class ClassPathXmlResource implements Resource{
    Document document;
    Element rootElement;
    Iterator<Element> elementIterator;
    public ClassPathXmlResource(String fileName) {
        SAXReader saxReader = new SAXReader();
        URL xmlPath = this.getClass().getClassLoader().getResource(fileName);
//将配置文件装载进来，生成一个迭代器，可以用于遍历
        try {
            this.document = saxReader.read(xmlPath);
            this.rootElement = document.getRootElement();
            this.elementIterator = this.rootElement.elementIterator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Override
    public boolean hasNext() {
        return this.elementIterator.hasNext();
    }

    @Override
    public Object next() {
        return this.elementIterator.next();
    }
}
